package com.godtree.model;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.google.common.collect.Lists;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
import lombok.experimental.FieldNameConstants;

/**
 * <p>
 * 排名数据
 * </p>
 *
 * @author lisicheng
 * @since 2022-07-18
 */
@TableName("tb_rank_data")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
public class RankData implements Serializable {

  private static final long serialVersionUID = 1L;

  /**
   * 主键
   */
  @TableId(type = IdType.INPUT)
  private String id;

  /**
   * 所属排名
   */
  private String ranks;

  /**
   * 数据名称
   */
  private String name;

  /**
   * 别名：来自于采集数据表
   */
  private String alias;

  /**
   * 数据名称拼音全拼
   */
  private String fullPinyinName;

  /**
   * 数据名称拼音简拼
   */
  private String simplePinyinName;

  /**
   * logo
   */
  private String image;

  /**
   * 默认排序分
   */
  private Integer defaultScore;

  /**
   * 下拉筛选项
   */
  private String drops;

  /**
   * 标签
   */
  private String tags;

  /**
   * 标签集合
   */
  @TableField(exist = false)
  private List<String> tagList;

  /**
   * 创建时间
   */
  private LocalDateTime createDate;

  /**
   * 更新时间
   */
  private LocalDateTime updateDate;

  /**
   * 逻辑删除标记（0：显示；1：隐藏
   */
  private String delFlag;

  /**
   * 是否显示
   */
  private String showHide;

  /**
   * 推荐语
   */
  private String recommendation;

  private String defaultRankItemId;

  /**
   * 默认分数
   */
  private String defaultRankScoreStr;

  private Integer defaultRankValue;

  /**
   * 排名数据下拉筛选项。目前逻辑中最多三个。在排名中定义，对应rankItem
   */
  @TableField(exist = false)
  private List<RankDrop> rankDropList;

  /**
   * 排名数据顶部筛选项。也可以说是排名的列（动态列），n多个
   */
  @TableField(exist = false)
  private List<RankScore> rankScoreList;

  /**
   * 原数据
   */
  @TableField(exist = false)
  private RankCompanyMarketCollect collect;

  /**
   * 分组日期，为了取最新数据
   */
  @TableField(exist = false)
  private LocalDateTime groupDate;
}
